﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Texfina.Core.Web;
using Texfina.BOQry.Co;
using Texfina.Entity.Co;
using Texfina.Core.Common;
using System.IO;
using System.Configuration;
using System.Text;

namespace CO
{
    public partial class WfAutorizacionOC : System.Web.UI.Page
    {

        string estado;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                MakeGridViewPrinterFriendly(gvListar);
                chkPendiente.Checked = true;

                CargarGrid();

                WebHelper.LoadListControl2(dbPlanta, BLocal.Local_qry01(), "ds_local", "id_local");

            }

            registerScript();
        }

        public void registerScript()
        {
            StringBuilder str = new StringBuilder();

            str.AppendLine("$(document).ready(function () {");
            // Indicar al pluging Metadata que los metadatos deberá buscarlos en el atributo class.
            str.AppendLine("$.metadata.setType('class');");

            str.AppendLine("$('table.grid').each(function () {");
            str.AppendLine("var grid = $(this);");

            // Por cada GridView que se encuentre modificar el código HTML generado para agregar el THEAD.
            str.AppendLine("if (grid.find('tbody > tr > th').length > 0) {");
            str.AppendLine("grid.find('tbody').before('<thead><tr></tr></thead>');");
            str.AppendLine("grid.find('thead:first tr').append(grid.find('th'));");
            str.AppendLine("grid.find('tbody tr:first').remove();");
            str.AppendLine("}");

            // Si el GridView tiene la clase "sortable" aplicar el plugin DataTables si tiene más de 10 elementos.
            str.AppendLine("if (grid.hasClass('sortable') && grid.find('tbody:first > tr').length > 10) {");
            str.AppendLine("grid.dataTable({");
            str.AppendLine("bJQueryUI: true,");
            str.AppendLine("iDisplayLength: 20,");
            str.AppendLine("sScrollY: '100%',");
            str.AppendLine("sPaginationType: 'full_numbers',");
            str.AppendLine("aoColumnDefs: [");
            str.AppendLine("{ bSortable: false, aTargets: grid.metadata().disableSortCols }");
            str.AppendLine("]");
            str.AppendLine("});");
            str.AppendLine("}");
            str.AppendLine("});");

            str.AppendLine("});");

            ScriptManager.RegisterStartupScript(this, this.GetType(), "ScriptRegister", str.ToString(), true);

        }   

        private void CargarGrid()
        {
            try
            {
                Evaluar();
                DateTime hoy = DateTime.Today;
                string fecha_actual = hoy.ToString("dd-MM-yyyy");

                EOrdenCompra eoc = new EOrdenCompra();

                eoc.Fe_ordenco_ini = Convert.ToDateTime(fecha_actual);
                eoc.Fe_ordenco_fin = Convert.ToDateTime(fecha_actual);

                eoc.Id_Empresa = Session[ConstSessionVar.EMPRESA].ToString(); //cargar con session
                eoc.Id_periodo = Session[ConstSessionVar.PERIODO].ToString(); //cargar con session

                eoc.Estado = estado;
                gvListar.DataSource = BOrdenCompra.OrderCompra_qry001(eoc);
                gvListar.DataBind();
                
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }

        private void Evaluar()
        {

            if (chkPendiente.Checked == true)
            {
                estado = Constants2.ConstEstadoOC.Pendiente;
            }
            else if (chk_nAutoriza.Checked == true)
            {
                estado = Constants2.ConstEstadoOC.nPendiente;
            }
            else
            {
                estado = Constants2.ConstEstadoOC.Autorizado;
            }
        }
        
        private void CargarGrid_Parametro()
        {
            try
            {
            MakeGridViewPrinterFriendly(gvListar);
            Evaluar();
            EOrdenCompra eoc = new EOrdenCompra();

            eoc.Fe_ordenco_ini = Convert.ToDateTime(ucControlFecha1.Text);
            eoc.Fe_ordenco_fin = Convert.ToDateTime(ucControlFecha2.Text);
            eoc.Id_Empresa = Session[ConstSessionVar.EMPRESA].ToString(); //cargar con session
            eoc.Id_periodo = Session[ConstSessionVar.PERIODO].ToString(); // cargar con session
            eoc.strEmitido = dbPlanta.SelectedItem.Text;
            eoc.Estado = estado;

            gvListar.DataSource = BOrdenCompra.OrderCompra_qry01(eoc);
            gvListar.DataBind();

            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
        }

        protected void btnBuscar3_Click(object sender, EventArgs e)
        {
            CargarGrid_Parametro();
           
        }


        private void MakeGridViewPrinterFriendly(GridView gridView)
        {
            if (gridView.Rows.Count > 0)
            {
                gridView.UseAccessibleHeader = true;
                gridView.HeaderRow.TableSection = TableRowSection.TableHeader;
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (GridViewRow row in gvListar.Rows)
                {
                    // almacena en variables los items que va recorriendo

                    var lblOrdenCompra = row.FindControl("lblId_Ordenco") as Label;

                    var chk = row.FindControl("chkBxSelect") as CheckBox;

                    // Solo aquellos items que tienen el check activo

                    if (chk.Checked)
                    {
                        //Response.Write(lblid.Text + "<br>");

                        EOrdenCompra eoc = new EOrdenCompra();

                        //la entidad obtine los siguientes valores a almacenar

                        eoc.psin_typeupd = "10";

                        eoc.Id_ordenco = lblOrdenCompra.Text;

                        eoc.Id_autoriza = Session[ConstSessionVar.IDLOGON].ToString(); //LLENAR CON SESSION

                        eoc.stordenco = Constants2.ConstEstadoOC.Autorizado;

                        eoc.Id_uupdarec = Session[ConstSessionVar.IDLOGON].ToString(); //LLENAR CON SESSION

                        eoc.Id_Empresa = Session[ConstSessionVar.EMPRESA].ToString();  // LLENAR CON SESSION

                        eoc.Id_periodo = Session[ConstSessionVar.PERIODO].ToString(); // LLENAR CON SESSION

                       BOrdenCompra.OrderCompra_mnt01(eoc);
           
                    }

                }
                CargarGrid_Parametro();
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }


        }

        protected void gvListar_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                gvListar.PageIndex = e.NewPageIndex;
                CargarGrid();
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());

            }
        }

        protected void btnBuscar0_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in gvListar.Rows)
            {
                // almacena en variables los items que va recorriendo

                var lblOrdenCompra = row.FindControl("lblId_Ordenco") as Label;

                var chk = row.FindControl("chkBxSelect") as CheckBox;

                // Solo aquellos items que tienen el check activo

                if (chk.Checked)
                {
                    //Response.Write(lblid.Text + "<br>");

                    EOrdenCompra eoc = new EOrdenCompra();

                    //la entidad obtine los siguientes valores a almacenar

                    eoc.psin_typeupd = "10";

                    eoc.Id_ordenco = lblOrdenCompra.Text;

                    eoc.Id_autoriza = Session[ConstSessionVar.IDLOGON].ToString(); //LLENAR CON SESSION

                    eoc.stordenco = Constants2.ConstEstadoOC.nPendiente;

                    eoc.Id_uupdarec = Session[ConstSessionVar.IDLOGON].ToString(); //LLENAR CON SESSION

                    eoc.Id_Empresa = Session[ConstSessionVar.EMPRESA].ToString();  // LLENAR CON SESSION

                    eoc.Id_periodo = Session[ConstSessionVar.PERIODO].ToString(); // LLENAR CON SESSION

                    eoc.Estado = estado;

                    BOrdenCompra.OrderCompra_mnt01(eoc);

                  
                }

            }
            CargarGrid_Parametro();
        }

        protected void btnActualizar_Click(object sender, EventArgs e)
        {
            CargarGrid();
        }

    }
}